package com.vcms.controller.customer.states;

import com.vcms.controller.customer.TransactionController;

public abstract class TransactionState {
	private TransactionController transactionController;
	
	public static final int	COININPUT = 10;
	public static final int	DISPENSEDRINK = 20;
	public static final int	FAULT = 30;
	public static final int	INITIAL = 40;
	public static final int	MAINTENANCE = 50;
	public static final int	READY = 60;
	public static final int	TERMINATE = 70;
	
	protected void setTransactionController(TransactionController transactionController){
		this.transactionController = transactionController;
	}
	
	protected TransactionController getTransactionController(){
		return this.transactionController;
	}
	
	public abstract boolean handleDisplayCustomerPanel();
	public abstract boolean handleStartTransaction();
	public abstract boolean handleProcessMoneyReceived();
	public abstract boolean handleCompleteTransaction();
	public abstract boolean handleTerminateTransaction();
	public abstract boolean handleTerminateFault();
	public abstract boolean handleRefreshCustomerPanel();
	
	public abstract void printState();
}
